/**
 * 文件名称:  Constant.java
 * 文件序号:  序号
 * 内容描述:  文件简单描述，多行换行书写
 * 版权声明:  山东鸿蝶信息技术有限公司
 * 创建用户:  zhangkai
 * 创建日期:  2017/2/25 15:55
 * 修改用户:  无
 * 修改日期:  无
 * 修改说明:  无
 * 文件版本:  V1.0
 * 文件路径:
 */

package com.hongdee.insurance;

import com.hongdee.base.entity.ResultEntity;
import com.hongdee.common.util.StringUtil;
import com.hongdee.common.util.TokenUtil;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

import javax.servlet.http.HttpServletRequest;
import java.io.*;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;

/**
 * 名  称:Constant
 * 类  型: class
 * 描  述: 用一句话描述类的作用
 * 路  径:com.hongdee.crm
 * 作  者:zhangkai
 * 日  期:2017/2/25 15:55
 */
public class Constant {

    public static enum COMMISSION_STATUS{
        init,argee,pass,passUpd
    }

    /**
     * 退保状态
     */
    public static enum INSURANCE_RETURN_TYPE{
        init,inaudit,argee
    }

    /**
     * 保险单返现状态
     */
    public static enum INSURANCE_BACK_TYPE{
        init,argee
    }

    public static enum INSURANCE_BLANCE_TYPE{
        /* 初始默认未结算 */
        init,
        /* 已结算 */
        blance,
        /* 已开票 */
        billing
    }

    /**
     * 保单含税状态
     */
    public static enum BILL_IN_TAX{
        /*不包含*/
        ex,
        /*包含税*/
        in
    }

    public static void setQueryByRoleDate(String uid,StringBuffer sql,List<String> params,String byName){
        String companyId = TokenUtil.getCompanyId(uid);
        if(!companyId.isEmpty()){
            sql.append("  and "+byName+".company_id in( '"+companyId+"') ");
        }
        /*List<Map<String,Object>> list=TokenUtil.getDataCompany(uid); // 获取
        if(!"".equals(byName)){
            byName=byName+".";
        }
        sql.append("  and "+byName+"company_id in( ''");
        for (int i = 0; i < list.size(); i++) {
            String id= StringUtil.formatEmpty(list.get(i).get("id"));
            sql.append(",?");
            params.add(id);
        }
        sql.append(" ) ");*/
    }

    /**
     * 统计所需要的类别 分别为日 周 月
     */
    public static enum STATSTICS_TYPE{
        day,week,month,beforeyear,year
    }


    public static Float formatFloat(Float f){
        int   scale  =   2;//设置位数
        int   roundingMode  =  4;//表示四舍五入，可以选择其他舍值方式，例如去尾，等等.
        BigDecimal   bd  =   new BigDecimal((double)f);
        bd   =  bd.setScale(scale,roundingMode);
        return bd.floatValue();
    }

    /**
     * 模板类型
     */
    public static enum COMPANY_TEMPLET{
        hebin,fenli,baohan
    }

    /**
     * 保单性质
     */
    public static enum INSURANCE_PROPERTY{
        jq /*单交强*/,sy /*单商业*/,all /*商业+交强*/
    }

    /**
     * 保单类别
     */
    public static enum INSURNACE_TYPE{
        def,add,back
    }

    public static enum INSURE_TYPE{
        sb /*新保*/ ,xb /*续保*/
    }

    public static ResultEntity expExcel(HttpServletRequest request, XSSFWorkbook wb) throws IOException {
        String path = uploadPath(request);
        String fileId = StringUtil.UUID();
        File filepack = new File(path);
        if(!filepack.exists()){
            filepack.mkdir();
        }
        String filePath =   path + File.separator + fileId + ".xlsx";
        File file = new File(filePath);
        file.createNewFile();
        FileOutputStream fileOut = new FileOutputStream(file);
        wb.write(fileOut);
        fileOut.close();
        ResultEntity res = new ResultEntity();
        res.setSuccess(true);
        res.setData(fileId);
        res.setMsg("文件生成成功！");
        return res;
    }

    public static String uploadPath(HttpServletRequest request){
        String path = request.getSession().getServletContext().getRealPath(".");
        path =   path + File.separator + "upload";
        return path;
    }

    public static String copyExcelToNewPath(HttpServletRequest request,String fileName) throws IOException {
        int bytesum = 0;
        int byteread = 0;
        String path = uploadPath(request);
        String fileId = StringUtil.UUID();

        String oldPath = path + File.separator + fileName + ".xlsx";
        String newPath = path + File.separator + fileId + ".xlsx";

        InputStream inStream = new FileInputStream(oldPath); //读入原文件
        FileOutputStream fs = new FileOutputStream(newPath);
        byte[] buffer = new byte[1444];
        while ((byteread = inStream.read(buffer)) != -1) {
            bytesum += byteread; //字节数 文件大小
            fs.write(buffer, 0, byteread);
        }
        inStream.close();
        fs.close();

        return fileId;
    }

    static String [] payType={"","现金","刷卡","微信","支付宝"};
    public static String getPayType(String type){
        if(!"".equals(type)){
            return payType[Integer.valueOf(type)];
        }
        return "";
    }


    /**
     * 不计免赔项分离的项目ID
     * @return
     */
    public static List<String> getBJMItemList(){
        List<String> itemList=new ArrayList<>();
        itemList.add("3");
        itemList.add("5");
        itemList.add("7");
        itemList.add("10");
        itemList.add("11");
        itemList.add("13");
        itemList.add("15");
        itemList.add("17");
        itemList.add("25");
        return itemList;
    }
}
